package com.yungu.swift.assets.driver.model.param;

import com.yungu.swift.base.model.admin.AdminParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author : cuixiuyin
 * @date : 2019/6/27
 */
@Data
@ApiModel(value = "司机信息对象")
public class AdminDriverParam extends AdminParam {

    @ApiModelProperty(value = "uuid")
    private String uuid;

    @ApiModelProperty(value = "司机类型（1出租车，2专车，3跨城拼车，4快车）", required = true, example = "0")
    private Integer businessType;

    @ApiModelProperty(value = "姓名")
    private String name;

    @ApiModelProperty(value = "身份证号")
    private String idCard;

    @ApiModelProperty(value = "手机号码")
    private String mobile;

    @ApiModelProperty(value = "身份证正面照片地址")
    private String idCardFaceImg;

    @ApiModelProperty(value = "身份证背面照片地址")
    private String idCardBackImg;

    @ApiModelProperty(value = "头像")
    private String face;

    @ApiModelProperty(value = "机动车驾驶证号（与身份证号一致）")
    private String licenseId;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "初次领取驾驶证日期")
    private Date getDriverLicenseDate;

    @ApiModelProperty(value = "驾驶证主页照片地址")
    private String drivingLicenceHomeImg;

    @ApiModelProperty(value = "驾驶证副页照片地址")
    private String drivingLicenceSubImg;

    @ApiModelProperty(value = "网络预约出租汽车驾驶员资格证号 / 出租车：从业资格证号")
    private String certificateNo;

    @ApiModelProperty(value = "资格证有效截止日期 / 出租车：从业资格证有效期止")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date networkCarProofOff;

    @ApiModelProperty(value = "资格证照片 / 出租车：从业资格证照片")
    private String certificateImage;

    @ApiModelProperty(value = "代理uuid")
    private String agentUuid;

    @ApiModelProperty(value = "公司uuid")
    private String companyUuid;

    @ApiModelProperty(value = "城市uuid")
    private String cityUuid;

    @ApiModelProperty(value = "性别 1.男、2.女", example = "0")
    private Integer sex;

    @ApiModelProperty(value = "驾驶员联系地址")
    private String driverContactAddress;

    @ApiModelProperty(value = "手持身份证照")
    private String driverIdCardImg;

    @ApiModelProperty(value = "司机编号")
    private String driverNo;

    @ApiModelProperty(value = "准驾车型")
    private String driverType;

    @ApiModelProperty(value = "驾驶证有效期限起")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date driverLicenseOn;

    @ApiModelProperty(value = "驾驶证有效期限止")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date driverLicenseOff;

    @ApiModelProperty(value = "交通违章次数", example = "0")
    private Integer trafficViolationsCount;

    @ApiModelProperty(value = "交通事故次数", example = "0")
    private Integer trafficAccidentCount;

    @ApiModelProperty(value = "是否巡游出租汽车驾驶员1：是、0：否", example = "0")
    private Integer taxiDriver;

    @ApiModelProperty(value = "是否专职驾驶员1：是、0：否", example = "0")
    private Integer fullTimeDriver;

    @ApiModelProperty(value = "网络预约出租汽车驾驶员证发证机构 / 出租车：从业资格证发证机构")
    private String networkCarIssueOrganization;

    @ApiModelProperty(value = "资格证发证日期 / 出租车：从业资格证发证日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date networkCarIssueDate;

    @ApiModelProperty(value = "初次领取资格证日期 / 出租车：从业资格证初次领证日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date getNetworkCarProofDate;

    @ApiModelProperty(value = "资格证有效起始日期 / 出租车：从业资格证有效起始日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date networkCarProofOn;

    @ApiModelProperty(value = "报备日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date registerDate;

    @ApiModelProperty(value = "服务类型 1：网络预约出租车、2：巡游出租车、3：私人小客车合乘", example = "0")
    private Integer commercialType;

    @ApiModelProperty(value = "驾驶员合同（或协议）签署公司")
    private String contractCompany;

    @ApiModelProperty(value = "合同签订日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractSign;

    @ApiModelProperty(value = "合同（或协议）有效期起")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractOn;

    @ApiModelProperty(value = "合同（或协议）有效期止")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractOff;

    @ApiModelProperty(value = "合同类型 HT：合同、XY：协议")
    private String contractType;

    @ApiModelProperty(value = "合同扫描件")
    private String contractPhoto;

    @ApiModelProperty(value = "银行开户名称")
    private String bankAccountName;

    @ApiModelProperty(value = "银行账号")
    private String bankAccount;

    @ApiModelProperty(value = "开户银行")
    private String bankName;

    @ApiModelProperty(value = "银行地址")
    private String bankAddress;

    @ApiModelProperty(value = "银行卡照片")
    private String bankPhoto;

    @ApiModelProperty(value = "司机培训信息")
    private List<AdminDriverTrainParam> driverTrainParams;

    @ApiModelProperty(value = "体检报告")
    private String examinateReport;

    @ApiModelProperty(value = "驾驶员民族")
    private String driverNation;

    @ApiModelProperty(value = "婚姻状况 10.未婚，20 已婚，40 离婚", example = "0")
    private Integer driverMaritalStatus;

    @ApiModelProperty(value = "外语能力 1.精通，2.熟练，3.良好，4.一般", example = "0")
    private Integer driverLanguageLevel;

    @ApiModelProperty(value = " 驾驶员学历 19.研究生,21.大学本科，31大学专科，41中等专科毕业,61普通高中毕业，71初中毕业，81小学毕业", example = "0")
    private Integer driverEducation;

    @ApiModelProperty(value = "户口登记机关名称")
    private String driverCensus;

    @ApiModelProperty(value = "户口住址或长住地址")
    private String driverAddress;

    @ApiModelProperty(value = "紧急情况联系人")
    private String emergencyContact;

    @ApiModelProperty(value = "紧急情况联系人电话")
    private String emergencyContactPhone;

    @ApiModelProperty(value = "紧急情况联系人通信地址")
    private String emergencyContactAddress;


    @Data
    @ApiModel(value = "司机培训信息")
    public static class AdminDriverTrainParam implements Serializable {

        @ApiModelProperty(value = "培训类型（1：岗前 2：日常）", example = "0")
        private Integer type;

        @ApiModelProperty(value = "驾驶员培训课程名称")
        private String courseName;

        @ApiModelProperty(value = "培训课程日期")
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date courseDate;

        @ApiModelProperty(value = "培训开始时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date startTime;

        @ApiModelProperty(value = "培训结束时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date stopTime;

        @ApiModelProperty(value = "培训课程日期")
        private BigDecimal duration;

        @ApiModelProperty(value = "UUID")
        private String uuid;
    }
}
